package main

import "fmt"

//学生管理系统
//

//定义学生的结构体
type student struct {
	id int64
	name string
	age int64
}
//定义学生管理者结构体
type studentManager struct {
	allstudent map[int64]student //采用map
}

//查看学生 
func (s studentManager) getstudent(){
	// 从s.allstudent这个map中把所有的学生检索出来
	for _,v:=range s.allstudent{
		fmt.Printf("学号:%d,姓名:%s,年龄:%d",v.id,v.name,v.age)
		fmt.Println()
	}
}
//删除学生
func (s studentManager) deletestudent(){
	//1根据输入要删除的学生学号删除学生信息
	var deleteId int64
	//2.去map中找有没有这个学生的id，如果没有，打印查无此人
	fmt.Printf("请输入要删除学生的学号: ")
	fmt.Scanln(&deleteId)
	_,ok:=s.allstudent[deleteId]
	if !ok{
		fmt.Printf("查无此人")
		return
	}
	//3。map中存在的话，从s.allstudent这个map中删除掉这个学生的键值对
	delete(s.allstudent, deleteId)
	fmt.Println("删除成功!~")
}

//增加学生
func (s studentManager) addstudent(){
	//1.根据用户输入的内容创建一个新的学生
	var (
		stuid int64
		stuname string
		stuage int64
	)
	//从用户获取输入
	fmt.Printf("请输入学号、姓名、年龄: ")
	fmt.Scanln(&stuid, &stuname, &stuage)
	newstudent := student{
		id:stuid,
		name:stuname,
		age:stuage,
	}
	//2.把新的学生放到s.allstudent这个map中
	s.allstudent[newstudent.id] = newstudent
	fmt.Println("添加成功!~")
}
//修改学生
func (s studentManager) changestudent(){
	//1.获取用户输入的学号
	var stuID int64
	fmt.Printf("请输入要修改的学生学号: ")
	fmt.Scanln(&stuID)
	//2.展示该学号对应的学生信息，如果没有显示查无此人
	stuObj,ok:=s.allstudent[stuID]
	if !ok{
		fmt.Printf("查无此人")
		return
	}
	fmt.Printf("要修改的信息:学号:%d 姓名:%s 年龄:%d",stuObj.id,stuObj.name,stuObj.age)
	fmt.Println()
	//3.请输入学生的新名字
	fmt.Println("请输入学生的新名字: ")
	var newName string
	fmt.Scanln(&newName)
	fmt.Println("请输入学生的新学号: ")
	var newid int64
	fmt.Scanln(&newid)
	fmt.Println("请输入学生的新年龄: ")
	var newage int64
	fmt.Scanln(&newage)
	//4.更新学生信息
	stuObj.id=newid
	stuObj.name=newName
	stuObj.age=newage
	s.allstudent[stuID]=stuObj //更新map中的信息
}